String.prototype.substr = function (start, length) {
    if (start === undefined) {
        return this.toString()
    }
    if (typeof start !== 'number' || (typeof length !== 'number' && length !== undefined)) {
        return ''
    }
    const strArr = [...this]
    const _length = strArr.length
    if (_length + start < 0) {
        start = 0
    }
    if (length === undefined || (start < 0 && start + length > 0)) {
        return strArr.slice(start).join('')
    } else {
        return strArr.slice(start, start + length).join('')
    }
}


String.prototype.substring = function (start, end) {
    if (start === undefined) {
        return this.toString()
    }
    if (typeof start !== 'number' || (typeof end !== 'number' && end !== undefined)) {
        return ''
    }
    if (!(start > 0)) {
        start = 0
    }
    if (!(end > 0) && end !== undefined) {
        end = 0
    }
    const strArr = [...this]
    const _length = strArr.length
    if (start > _length) {
        start = _length
    }
    if (end > _length) {
        end = _length
    }
    if (end < start) {
        [start, end] = [end, start]
    }
    return strArr.slice(start, end).join('')
}